import { app, Menu, Tray, nativeImage } from 'electron'
import { existsSync } from 'fs'

let tray: Tray | null = null

export function createTray(onScreenshotClick: () => void, iconPath: string, onShowMainWindow?: () => void) {
  try {
    console.log('托盘图标路径:', iconPath)
    console.log('图标文件是否存在:', existsSync(iconPath))
    
    // 创建一个更大、更清晰的相机图标（64x64 像素，带颜色）
    const size = 64
    const buf = Buffer.alloc(size * size * 4)
    
    // 背景透明
    buf.fill(0)
    
    const setPixel = (x: number, y: number, r: number, g: number, b: number, a: number) => {
      if (x >= 0 && x < size && y >= 0 && y < size) {
        const i = (y * size + x) * 4
        buf[i] = r
        buf[i + 1] = g
        buf[i + 2] = b
        buf[i + 3] = a
      }
    }
    
    const fillRect = (x1: number, y1: number, x2: number, y2: number, r: number, g: number, b: number, a: number) => {
      for (let y = y1; y <= y2; y++) {
        for (let x = x1; x <= x2; x++) {
          setPixel(x, y, r, g, b, a)
        }
      }
    }
    
    const drawRect = (x1: number, y1: number, x2: number, y2: number, r: number, g: number, b: number, a: number) => {
      for (let x = x1; x <= x2; x++) {
        setPixel(x, y1, r, g, b, a) // 上边
        setPixel(x, y2, r, g, b, a) // 下边
      }
      for (let y = y1; y <= y2; y++) {
        setPixel(x1, y, r, g, b, a) // 左边
        setPixel(x2, y, r, g, b, a) // 右边
      }
    }
    
    // 绘制相机主体 - 深灰色背景（64x64 版本，所有坐标 x2）
    fillRect(8, 20, 54, 56, 70, 70, 70, 255)
    
    // 绘制相机主体外框 - 白色边框（双层，更粗）
    drawRect(8, 20, 54, 56, 240, 240, 240, 255)
    drawRect(9, 21, 53, 55, 240, 240, 240, 255)
    drawRect(10, 22, 52, 54, 240, 240, 240, 255)
    
    // 绘制快门按钮 - 浅灰色（更大）
    fillRect(22, 10, 40, 18, 200, 200, 200, 255)
    drawRect(22, 10, 40, 18, 240, 240, 240, 255)
    drawRect(23, 11, 39, 17, 240, 240, 240, 255)
    
    // 绘制镜头外圈 - 黑色（更大的圆形）
    fillRect(22, 30, 40, 48, 30, 30, 30, 255)
    
    // 绘制镜头中圈 - 深灰色
    fillRect(26, 34, 36, 44, 60, 60, 60, 255)
    
    // 绘制镜头内圈 - 蓝色（更大的反光）
    fillRect(28, 36, 34, 42, 60, 140, 220, 255)
    
    // 绘制镜头高光 - 白色（更明显）
    fillRect(30, 38, 32, 40, 255, 255, 255, 220)
    
    // 绘制闪光灯 - 亮黄色（更大更醒目）
    fillRect(46, 26, 50, 30, 255, 220, 100, 255)
    drawRect(46, 26, 50, 30, 255, 240, 150, 255)
    
    const icon = nativeImage.createFromBuffer(buf, { width: size, height: size })
    console.log('创建的图标尺寸:', icon.getSize())
    
    console.log('准备创建托盘，图标尺寸:', icon.getSize())
    
    // 创建托盘
    tray = new Tray(icon)
    console.log('托盘对象创建成功')
  
    // 创建托盘菜单
    const contextMenu = Menu.buildFromTemplate([
      {
        label: '🏠 打开主窗口',
        click: () => {
          if (onShowMainWindow) {
            onShowMainWindow()
          }
        }
      },
      {
        label: '📸 截图 (Ctrl+Alt+A)',
        click: onScreenshotClick
      },
      {
        type: 'separator'
      },
      {
        label: '❌ 退出',
        click: () => {
          app.quit()
        }
      }
    ])
    
    tray.setToolTip('截图工具 - 按 Ctrl+Alt+A 开始截图')
    tray.setContextMenu(contextMenu)
    
    // 点击托盘图标打开主窗口（如果没有提供回调，则触发截图）
    tray.on('click', () => {
      if (onShowMainWindow) {
        onShowMainWindow()
      } else {
        onScreenshotClick()
      }
    })
    
    console.log('托盘菜单设置完成')
    return tray
  } catch (error) {
    console.error('创建托盘时发生错误:', error)
    throw error
  }
}



